package com.lishang.location.helper.receiver

import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.util.Log
import com.lishang.location.helper.config.Config
import com.lishang.location.helper.manager.SpHookManager
import com.lishang.location.helper.manager.SpManager
import kotlin.math.ln

class MainReceiver : BroadcastReceiver() {

    companion object {

        fun sendLatLng(context: Context, lat: Double, lng: Double) {
            send(context, Intent().apply {
                putExtra(Config.KEY_TYPE, 1)
                putExtra(Config.KEY_LNG, lng)
                putExtra(Config.KEY_LAT, lat)
            })
            SpManager.apply {
                putSP(Config.KEY_LNG, lng)
                putSP(Config.KEY_LAT, lat)
            }
        }

        fun sendEnabled(context: Context, enable: Boolean) {
            send(context, Intent().apply {
                putExtra(Config.KEY_TYPE, 0)
                putExtra(Config.KEY_ENABLED, enable)
            })
            SpManager.apply {
                putSP(Config.KEY_ENABLED, enable)
            }
        }

        fun sendOffset(context: Context, offset: Int) {
            send(context, Intent().apply {
                putExtra(Config.KEY_TYPE, 2)
                putExtra(Config.KEY_OFFSET, offset)
            })
            SpManager.apply {
                putSP(Config.KEY_OFFSET, offset)
            }
        }

        private fun send(context: Context, intent: Intent) {
            intent.action = Config.BROADCAST_RECEIVER_ACTION
            intent.flags = Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP
            context.sendBroadcast(intent)
        }

    }


    override fun onReceive(context: Context?, intent: Intent?) {
        Log.e("MainReceiver", "onReceive: ${intent?.extras}")
        intent?.apply {
            if (Config.BROADCAST_RECEIVER_ACTION == action) {

                when (getIntExtra(Config.KEY_TYPE, -1)) {
                    0 -> {
                        val enable = getBooleanExtra(Config.KEY_ENABLED, false)
                        SpManager.putSP(Config.KEY_ENABLED, enable)
                    }
                    1 -> {
                        val lat = getDoubleExtra(Config.KEY_LAT, 0.0)
                        val lng = getDoubleExtra(Config.KEY_LNG, 0.0)

                        SpManager.putSP(Config.KEY_LAT, lat)
                        SpManager.putSP(Config.KEY_LNG, lng)
                    }
                    2 -> {
                        val offset = getIntExtra(Config.KEY_OFFSET, 15)
                        SpManager.putSP(Config.KEY_OFFSET, offset)
                    }
                }


            }
        }
    }
}